package com.rybbaby.tss.front.tssStudent.entity;

import com.fasterxml.jackson.annotation.JsonIgnore;
import com.rybbaby.tss.platform.sysAdminUser.entity.SysAdminUser;
import org.hibernate.annotations.DynamicInsert;
import org.hibernate.annotations.DynamicUpdate;
import org.hibernate.annotations.GenericGenerator;

import javax.persistence.*;
import java.io.Serializable;

/**
 * @description 客户表
 * 
 * @author 雷春琼
 * 
 * @createDate 2017-08-09 下午2:48:34
 */
@Entity
@Table(name = "tss_student")
@DynamicUpdate(true)
@DynamicInsert(true)
public class TssStudent implements Serializable {
	
	private static final long serialVersionUID = 20656070622809L;
	
	/** 主键 **/
	private java.lang.String id;
	/** 客户姓名 **/
	private java.lang.String name;
	/** 是否激活App端 **/
	private Boolean registerApp;
	/** 客户头像 **/
	private java.lang.String headPortrait;
	/** 昵称 **/
	private java.lang.String nickName;
	/** 性别 **/
	private java.lang.Integer sex;
	/**
	 * 会员年龄
	 */
	private Double age;
	/** 出生日期 **/
	private java.util.Date birthdayDate;
	/** 联系电话 **/
	private java.lang.String contactPhone;
	/** 学员渠道id **/
	private java.lang.Integer channelSource;
	/** 需要程度 **/
	private java.lang.Integer demanDegree;
	/** 微信号 **/
	private java.lang.String weiChat;
	/** 学员新增方式 **/
	private java.lang.String addressProvince;
	/** 所属城市 **/
	private java.lang.String addressCity;
	/** 所属城区 **/
	private java.lang.String addressRegion;
	/** 学员状态：0活跃1历史 **/
	private java.lang.String familyAddress;
	/** 备注 **/
	private java.lang.String remark;
	/** 名单状态 **/
	private java.lang.Integer listStatus;
	/** 客户状态 **/
	private java.lang.Integer stuStatus;
	/** 当前操作者Id **/
	private String  adminUserId;
	/** 会员合同编码 **/
	private String  contractCode;
	/** 会员编码 **/
	private String  memberCode;
	/** 是否已转会员 **/
	private java.lang.Boolean isMember;
	/** 学员唯一编码 **/
	private java.sql.Timestamp createTime;
	/** APP中孩子ID **/
	private java.sql.Timestamp updateTime;

	/** 是否转介绍 **/
	private java.lang.Boolean isTurnIntroduce;
	/** 是否完成调查问卷结果 **/
	private java.lang.Boolean isFinishQuestionnaire;
	/** 是否参数过早教课程 **/
	private java.lang.Boolean isJoinEarlyEducationCourse;

	/** 客户评估 **/
	private java.lang.String clientAssess;
	/** 入园方式 **/
	private java.lang.String joinSchoolWay;
	/** 选择机构元素 **/
	private java.lang.String organizationElement;
	/** 关注潜能开发 **/
	private java.lang.String potencyExploit;
	/** 感兴趣的课程 **/
	private java.lang.String interstedCourse;
	/** 性格 **/
	private java.lang.String characters;

	/** 来源其他输入备注 **/
	private java.lang.String channelRemark;
	/** 感兴趣的课程其他用户输入备注 **/
	private java.lang.String interstedCourseRemark;

	/** 版本 **/
	private java.lang.Integer version;

	/**
	 * 会员编号
	 */
	private String number;

	/**
	 * 固定电话
	 */
	private String telePhone;

	/** 会员二维码 **/
	private String quickMark;


	/**
	 * 所属顾问id
	 */
	private String empAdminUserId;

	/**
	 * 用户信息
	 */
	@JsonIgnore
	private SysAdminUser sysAdminUser;

	
	/**
	 * 方法: 取得主键
	 *
	 * @return java.lang.String 主键
	 */
	@Id
	@GeneratedValue(generator = "tss_studentIDGenerator" , strategy = GenerationType.AUTO)
	@GenericGenerator(name = "tss_studentIDGenerator" , strategy = "uuid")
	@Column(name = "id", nullable= false, length = 32)
	public java.lang.String getId() {
		return this.id;
	}
	
	/**
	 * 方法: 设置主键
	 *
	 * @param id 主键
	 */
	public void setId(java.lang.String id) {
		this.id = id;
	}
	
	/**
	 * 方法: 取得客户姓名
	 *
	 * @return java.lang.String 客户姓名
	 */
	@Column(name = "name", nullable= true, length = 12)
	public java.lang.String getName() {
		return this.name;
	}
	
	/**
	 * 方法: 设置客户姓名
	 *
	 * @param name 客户姓名
	 */
	public void setName(java.lang.String name) {
		this.name = name;
	}
	
	/**
	 * 方法: 取得昵称
	 *
	 * @return java.lang.String 昵称
	 */
	@Column(name = "nickName", nullable= true, length = 50)
	public java.lang.String getNickName() {
		return this.nickName;
	}
	
	/**
	 * 方法: 设置昵称
	 *
	 * @param nickName 昵称
	 */
	public void setNickName(java.lang.String nickName) {
		this.nickName = nickName;
	}

	@Column(name = "headPortrait")
	public String getHeadPortrait() {
		return headPortrait;
	}

	public void setHeadPortrait(String headPortrait) {
		this.headPortrait = headPortrait;
	}

	/**
	 * 方法: 取得性别
	 *
	 * @return java.lang.Integer 性别
	 */
	@Column(name = "sex", nullable= true, length = 11)
	public java.lang.Integer getSex() {
		return this.sex;
	}
	
	/**
	 * 方法: 设置性别
	 *
	 * @param sex 性别
	 */
	public void setSex(java.lang.Integer sex) {
		this.sex = sex;
	}
	
	/**
	 * 方法: 取得出生日期
	 *
	 * @return java.util.Date 出生日期
	 */
	@Column(name = "birthdayDate", nullable= true, length = 10)
	public java.util.Date getBirthdayDate() {
		return this.birthdayDate;
	}
	
	/**
	 * 方法: 设置出生日期
	 *
	 * @param birthdayDate 出生日期
	 */
	public void setBirthdayDate(java.util.Date birthdayDate) {
		this.birthdayDate = birthdayDate;
	}
	
	/**
	 * 方法: 取得联系电话
	 *
	 * @return java.lang.String 联系电话
	 */
	@Column(name = "contactPhone", nullable= true, length = 11)
	public java.lang.String getContactPhone() {
		return this.contactPhone;
	}
	
	/**
	 * 方法: 设置联系电话
	 *
	 * @param contactPhone 联系电话
	 */
	public void setContactPhone(java.lang.String contactPhone) {
		this.contactPhone = contactPhone;
	}
	
	/**
	 * 方法: 取得学员渠道id
	 *
	 * @return java.lang.Integer 学员渠道id
	 */
	@Column(name = "channelSource", nullable= true, length = 11)
	public java.lang.Integer getChannelSource() {
		return this.channelSource;
	}
	
	/**
	 * 方法: 设置学员渠道id
	 *
	 * @param channelSource 学员渠道id
	 */
	public void setChannelSource(java.lang.Integer channelSource) {
		this.channelSource = channelSource;
	}
	
	/**
	 * 方法: 取得需要程度
	 *
	 * @return java.lang.Integer 需要程度
	 */
	@Column(name = "demanDegree", nullable= true, length = 11)
	public java.lang.Integer getDemanDegree() {
		return this.demanDegree;
	}
	
	/**
	 * 方法: 设置需要程度
	 *
	 * @param demanDegree 需要程度
	 */
	public void setDemanDegree(java.lang.Integer demanDegree) {
		this.demanDegree = demanDegree;
	}
	
	/**
	 * 方法: 取得微信号
	 *
	 * @return java.lang.String 微信号
	 */
	@Column(name = "weiChat", nullable= true, length = 20)
	public java.lang.String getWeiChat() {
		return this.weiChat;
	}
	
	/**
	 * 方法: 设置微信号
	 *
	 * @param weiChat 微信号
	 */
	public void setWeiChat(java.lang.String weiChat) {
		this.weiChat = weiChat;
	}
	
	/**
	 * 方法: 取得学员新增方式
	 *
	 * @return java.lang.String 学员新增方式
	 */
	@Column(name = "addressProvince", nullable= true, length = 20)
	public java.lang.String getAddressProvince() {
		return this.addressProvince;
	}
	
	/**
	 * 方法: 设置学员新增方式
	 *
	 * @param addressProvince 学员新增方式
	 */
	public void setAddressProvince(java.lang.String addressProvince) {
		this.addressProvince = addressProvince;
	}
	
	/**
	 * 方法: 取得所属城市
	 *
	 * @return java.lang.String 所属城市
	 */
	@Column(name = "addressCity", nullable= true, length = 20)
	public java.lang.String getAddressCity() {
		return this.addressCity;
	}
	
	/**
	 * 方法: 设置所属城市
	 *
	 * @param addressCity 所属城市
	 */
	public void setAddressCity(java.lang.String addressCity) {
		this.addressCity = addressCity;
	}
	
	/**
	 * 方法: 取得所属城区
	 *
	 * @return java.lang.String 所属城区
	 */
	@Column(name = "addressRegion", nullable= true, length = 20)
	public java.lang.String getAddressRegion() {
		return this.addressRegion;
	}
	
	/**
	 * 方法: 设置所属城区
	 *
	 * @param addressRegion 所属城区
	 */
	public void setAddressRegion(java.lang.String addressRegion) {
		this.addressRegion = addressRegion;
	}
	
	/**
	 * 方法: 取得学员状态：0活跃1历史
	 *
	 * @return java.lang.String 学员状态：0活跃1历史
	 */
	@Column(name = "familyAddress", nullable= true, length = 50)
	public java.lang.String getFamilyAddress() {
		return this.familyAddress;
	}
	
	/**
	 * 方法: 设置学员状态：0活跃1历史
	 *
	 * @param familyAddress 学员状态：0活跃1历史
	 */
	public void setFamilyAddress(java.lang.String familyAddress) {
		this.familyAddress = familyAddress;
	}
	
	/**
	 * 方法: 取得备注
	 *
	 * @return java.lang.String 备注
	 */
	@Column(name = "remark", nullable= true, length = 50)
	public java.lang.String getRemark() {
		return this.remark;
	}
	
	/**
	 * 方法: 设置备注
	 *
	 * @param remark 备注
	 */
	public void setRemark(java.lang.String remark) {
		this.remark = remark;
	}
	
	/**
	 * 方法: 取得名单状态
	 *
	 * @return java.lang.Integer 名单状态
	 */
	@Column(name = "listStatus", nullable= true, length = 11)
	public java.lang.Integer getListStatus() {
		return this.listStatus;
	}
	
	/**
	 * 方法: 设置名单状态
	 *
	 * @param listStatus 名单状态
	 */
	public void setListStatus(java.lang.Integer listStatus) {
		this.listStatus = listStatus;
	}
	/**
	 * 方法: 取得客户状态
	 *
	 * @return java.lang.Integer 客户状态
	 */
	@Column(name = "stuStatus", nullable= true, length = 11)
	public Integer getStuStatus() {
		return stuStatus;
	}
	/**
	 * 方法: 设置客户状态
	 *
	 * @param stuStatus 客户状态
	 */
	public void setStuStatus(Integer stuStatus) {
		this.stuStatus = stuStatus;
	}

	/**
	 * 方法: 取得当前操作者Id
	 *
	 * @return java.lang.Integer 当前操作者Id
	 */
	@Column(name = "adminUserId", nullable= true, length = 11)
	public java.lang.String getAdminUserId() {
		return this.adminUserId;
	}
	
	/**
	 * 方法: 设置当前操作者Id
	 *
	 * @param adminUserId 当前操作者Id
	 */
	public void setAdminUserId(java.lang.String adminUserId) {
		this.adminUserId = adminUserId;
	}

	@Column(name = "contractCode", nullable= true, length = 32)
	public String getContractCode() {
		return contractCode;
	}

	public void setContractCode(String contractCode) {
		this.contractCode = contractCode;
	}

	@Column(name = "memberCode", nullable= true, length = 32)
	public String getMemberCode() {
		return memberCode;
	}

	public void setMemberCode(String memberCode) {
		this.memberCode = memberCode;
	}

	/**
	 * 方法: 取得是否已转会员
	 *
	 * @return java.lang.Boolean 是否已转会员
	 */
	@Column(name = "isMember", nullable= true, length = 1)
	public java.lang.Boolean getIsMember() {
		return isMember;
	}
	
	/**
	 * 方法: 设置是否已转会员
	 *
	 * @param isMember 是否已转会员
	 */
	public void setIsMember(java.lang.Boolean isMember) {
		this.isMember = isMember;
	}

	/**
	 * 创建时间
	 * @return
	 */
	@Column(name = "createTime", nullable= true, length = 19)
	public java.sql.Timestamp getCreateTime() {
		return this.createTime;
	}

	/**
	 * 创建时间
	 * @param createTime
	 */
	public void setCreateTime(java.sql.Timestamp createTime) {
		this.createTime = createTime;
	}
	
	/**
	 * 方法: 取得APP中孩子ID
	 *
	 * @return java.sql.Timestamp APP中孩子ID
	 */
	@Column(name = "updateTime", nullable= true, length = 19)
	public java.sql.Timestamp getUpdateTime() {
		return this.updateTime;
	}
	
	/**
	 * 方法: 设置修改时间
	 *
	 * @param updateTime 修改时间
	 */
	public void setUpdateTime(java.sql.Timestamp updateTime) {
		this.updateTime = updateTime;
	}
	
	/**
	 * 方法: 取得版本
	 *
	 * @return java.lang.Integer
	 */
    @Version
	@Column(name = "version", nullable= true, length = 11)
	public java.lang.Integer getVersion() {
		return this.version;
	}
	
	/**
	 * 方法: 设置版本
	 *
	 * @param version
	 */
	public void setVersion(java.lang.Integer version) {
		this.version = version;
	}

	/**
	 * 所属顾问
	 * @return
	 */
	@Column(name = "empAdminUserId", nullable= true, length = 32)
	public String getEmpAdminUserId() {
		return empAdminUserId;
	}

	public void setEmpAdminUserId(String adminUserId) {
		this.empAdminUserId = empAdminUserId;
	}

	/**
	 * 获取用户信息
	 * @return
	 */
	@JoinColumn(name = "adminUserId" , insertable = false , updatable = false)
	@ManyToOne(fetch = FetchType.LAZY , targetEntity = SysAdminUser.class)
	public SysAdminUser getSysAdminUser() {
		return sysAdminUser;
	}

	public void setSysAdminUser(SysAdminUser sysAdminUser) {
		this.sysAdminUser = sysAdminUser;
	}

	/**
	 * 会员编号
	 * @return
	 */
	@Column(name = "number", nullable= true, length = 100)
	public String getNumber() {
		return number;
	}

	public void setNumber(String number) {
		this.number = number;
	}

	@Column(name = "age", nullable= true)
	public Double getAge() {
		return age;
	}

	public void setAge(Double age) {
		this.age = age;
	}

	@Column(name = "isTurnIntroduce", nullable= true, length = 1)
	public Boolean getIsTurnIntroduce() {
		return isTurnIntroduce;
	}

	public void setIsTurnIntroduce(Boolean isTurnIntroduce) {
		this.isTurnIntroduce = isTurnIntroduce;
	}
	@Column(name = "isFinishQuestionnaire", nullable= true, length = 1)
	public Boolean getIsFinishQuestionnaire() {
		return isFinishQuestionnaire;
	}

	public void setIsFinishQuestionnaire(Boolean isFinishQuestionnaire) {
		this.isFinishQuestionnaire = isFinishQuestionnaire;
	}
	@Column(name = "isJoinEarlyEducationCourse", nullable= true, length = 1)
	public Boolean getIsJoinEarlyEducationCourse() {
		return isJoinEarlyEducationCourse;
	}

	public void setIsJoinEarlyEducationCourse(Boolean isJoinEarlyEducationCourse) {
		this.isJoinEarlyEducationCourse = isJoinEarlyEducationCourse;
	}
	@Column(name = "clientAssess", nullable= true, length = 50)
	public String getClientAssess() {
		return clientAssess;
	}

	public void setClientAssess(String clientAssess) {
		this.clientAssess = clientAssess;
	}
	@Column(name = "joinSchoolWay", nullable= true, length = 50)
	public String getJoinSchoolWay() {
		return joinSchoolWay;
	}

	public void setJoinSchoolWay(String joinSchoolWay) {
		this.joinSchoolWay = joinSchoolWay;
	}
	@Column(name = "organizationElement", nullable= true, length = 50)
	public String getOrganizationElement() {
		return organizationElement;
	}

	public void setOrganizationElement(String organizationElement) {
		this.organizationElement = organizationElement;
	}
	@Column(name = "potencyExploit", nullable= true, length = 50)
	public String getPotencyExploit() {
		return potencyExploit;
	}

	public void setPotencyExploit(String potencyExploit) {
		this.potencyExploit = potencyExploit;
	}
	@Column(name = "interstedCourse", nullable= true, length = 50)
	public String getInterstedCourse() {
		return interstedCourse;
	}

	public void setInterstedCourse(String interstedCourse) {
		this.interstedCourse = interstedCourse;
	}
	@Column(name = "characters", nullable= true, length = 100)
	public String getCharacters() {
		return characters;
	}

	public void setCharacters(String characters) {
		this.characters = characters;
	}

	@Column(name = "channelRemark", nullable= true, length = 100)
	public String getChannelRemark() {
		return channelRemark;
	}

	public void setChannelRemark(String channelRemark) {
		this.channelRemark = channelRemark;
	}

	@Column(name = "interstedCourseRemark", nullable= true, length = 100)
	public String getInterstedCourseRemark() {
		return interstedCourseRemark;
	}

	public void setInterstedCourseRemark(String interstedCourseRemark) {
		this.interstedCourseRemark = interstedCourseRemark;
	}

	@Column(name = "telePhone", nullable= true, length = 12)
	public String getTelePhone() {
		return telePhone;
	}

	public void setTelePhone(String telePhone) {
		this.telePhone = telePhone;
	}

	@Column(name = "quickMark", nullable= true, length = 8)
	public String getQuickMark() {
		return quickMark;
	}

	public void setQuickMark(String quickMark) {
		this.quickMark = quickMark;
	}

	@Column(name = "registerApp")
	public Boolean getRegisterApp() {
		return registerApp;
	}

	public void setRegisterApp(Boolean registerApp) {
		this.registerApp = registerApp;
	}
}